A True Random Number Generator (TRNG) makes random numbers for use in cryptographic applications, such as key generation. A strength of a cipher system is determined by the strength of the key that is, in turn, driven by a key length (i.e., number of bits) and a randomness of the number that generates the key. In an optimal situation, the random numbers are based on true physical sources of randomness that cannot be predicted. Ring oscillators with variable frequencies in time are commonly used as a source of true randomness. The main criterion in the TRNG is that the pool of numbers is unpredictable for any external observer. TRNG functions based on computer process identifications, parent process identifications, time and other predictable processes are considered weak.